
Z.JsonCall = function() {
}

Z.JsonCall.prototype = {
    success : function(o) {
        try {

            Z.HideWait();

            if (o.responseText == undefined) {
                alert("Error: responseText no es una respuesta valida.");
            }

            var data = Y.lang.JSON.parse(o.responseText);

            if (Y.lang.isBoolean(data.success) == false) {
                alert("Se esperaba un boolean para data.success");
                return;
            }

            if (data.redirect != undefined) {
                window.location = Z.ctx + data.redirect;
            }

            if (Y.lang.isString(data.exception)) {
                Z.ShowException(data.exception);
                return;
            }

            Z.ProcesarDivs(data);

            if (data.success) {
                this.exito(data);
            } else {
                this.fallo(data);
            }

        } catch (x) {
            Z.HideWait();
            alert("JsonCall (success): " + x);

        }
    },
    failure : function(o) {
        Z.HideWait();
        if (!Y.util.Connect.isCallInProgress(o)) {
            Z.ShowException("Error (f): " + Z.ParsearError(o));
        }
    },

    procesarDivs : function(data) {

        if (Y.lang.isArray(data.divs) == false) {
            alert("data.divs no es un array.");
            return;
        }
        for ( var j = 0; j < data.divs.length; j++) {
            var m = data.divs[j];
            Z.Publicar(m.div, m.msg);
        }
    },

    argument : null,
    cache : false,
    exito : function(data) {
        alert('default: exito!...');
    },
    fallo : function(data) {
        // alert('default: fallo!...');
    },
    _tabView : null,
    setTabView : function(tabView) {
        this._tabView = tabView;
    },
    _formName : null,
    setFormName : function(formName) {
        this._formName = formName;
    }
}